/*
 * PainelLocal.java
 *
 * Created on 4 de Novembro de 2009, 13:23
 */
package agendaBD;

import java.sql.ResultSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JComponent;
import javax.swing.JOptionPane;

/**
 *
 * @author  
 */
public class PainelLocal extends javax.swing.JPanel {

    public static final int EDITANDO = 0;
    public static final int EXIBINDO = 1;
    private boolean upDate = false;
    private int status = EXIBINDO;
    boolean valNome = true;
    boolean valID = true;
   

    /** Creates new form PainelLocal */
    public PainelLocal() {
        initComponents();

        this.setEditable(false);
        this.status = EXIBINDO;
        this.validaNome.setVisible(false);
        this.validaID.setVisible(false);
        //this.txtCapacidade.setVisible(false);
        //this.txtID.setVisible(false);

        //inicializa lista lateral de contatos
        listaLocais();
    }

    /**
     * Seta os componentes como editavel ou não
     * @param flag
     */
    public void setEditable(boolean flag) {

        this.setComponente(this.txtNome, flag);
        this.setComponente(this.txtEndereco, flag);
        this.setComponente(this.cmbFacilidade1, flag);
        this.setComponente(this.cbxIsSala, flag);
        this.setComponente(this.txtID, flag);
        this.setComponente(this.txtCapacidade, flag);

        if (flag) {
            this.btnEditar.setText("OK");
            this.btnExcluir.setText("Cancelar");
        } else {
            this.btnEditar.setText("Editar");
            this.btnExcluir.setText("Excluir");
        }

        this.setComponente(this.btnEditar, flag);
        this.setComponente(this.btnExcluir, flag);

    }

    public void setComponente(JComponent c, boolean flag) {

        c.setEnabled(flag);

    }

    /**
     * Carrega os dados do BD para lista
     */
    private void listaLocais() {
        ResultSet resultado;
        try {
            resultado = Conexao.getInstance().consultar("select nome from locais");

            String[] todosLocais;

            int i;

            if (resultado.last()) {
                todosLocais = new String[resultado.getRow()];

                resultado.beforeFirst();

                for (i = 0; resultado.next(); i++) {
                    todosLocais[i] = resultado.getString(1);
                }
            } else {
                todosLocais = new String[0];
            }

            lstLocal.setListData(todosLocais);
        } catch (Exception ex) {
            Logger.getLogger(PainelCompromissos.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;

        pnlController = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        lstLocal = new javax.swing.JList();
        btnNovoContato = new javax.swing.JButton();
        pnlContent = new javax.swing.JPanel();
        btnEditar = new javax.swing.JButton();
        btnExcluir = new javax.swing.JButton();
        lblNome = new javax.swing.JLabel();
        lblEndereco = new javax.swing.JLabel();
        lblAcesso = new javax.swing.JLabel();
        txtNome = new javax.swing.JTextField();
        jScrollPane2 = new javax.swing.JScrollPane();
        txtEndereco = new javax.swing.JTextArea();
        pnlSeSala = new javax.swing.JPanel();
        lblCapacidade = new javax.swing.JLabel();
        lblID = new javax.swing.JLabel();
        txtID = new javax.swing.JTextField();
        txtCapacidade = new javax.swing.JTextField();
        validaID = new javax.swing.JLabel();
        cmbFacilidade1 = new javax.swing.JComboBox();
        cbxIsSala = new javax.swing.JCheckBox();
        validaNome = new javax.swing.JLabel();
        pnlLocal = new javax.swing.JPanel();
        lblLocal = new javax.swing.JLabel();
        lblDescricaoLocal = new javax.swing.JLabel();
        icoLocal = new javax.swing.JLabel();

        pnlController.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 5, 1, 5));
        pnlController.setPreferredSize(new java.awt.Dimension(150, 100));

        lstLocal.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                lstLocalMouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(lstLocal);

        btnNovoContato.setText("Novo Local");
        btnNovoContato.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNovoContatoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout pnlControllerLayout = new javax.swing.GroupLayout(pnlController);
        pnlController.setLayout(pnlControllerLayout);
        pnlControllerLayout.setHorizontalGroup(
            pnlControllerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlControllerLayout.createSequentialGroup()
                .addGroup(pnlControllerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlControllerLayout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addComponent(btnNovoContato, javax.swing.GroupLayout.DEFAULT_SIZE, 132, Short.MAX_VALUE)))
                .addContainerGap())
        );
        pnlControllerLayout.setVerticalGroup(
            pnlControllerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlControllerLayout.createSequentialGroup()
                .addComponent(btnNovoContato)
                .addGap(17, 17, 17)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 475, Short.MAX_VALUE))
        );

        btnEditar.setText("Editar");
        btnEditar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEditarActionPerformed(evt);
            }
        });

        btnExcluir.setText("Excluir");
        btnExcluir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnExcluirActionPerformed(evt);
            }
        });

        lblNome.setText("Nome");

        lblEndereco.setText("Endereço");

        lblAcesso.setText("Facilidade de Acesso");

        txtNome.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtNomeActionPerformed(evt);
            }
        });
        txtNome.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                txtNomeFocusGained(evt);
            }
            public void focusLost(java.awt.event.FocusEvent evt) {
                txtNomeFocusLost(evt);
            }
        });

        txtEndereco.setColumns(20);
        txtEndereco.setRows(5);
        jScrollPane2.setViewportView(txtEndereco);

        lblCapacidade.setText("Capacidade");

        lblID.setText("ID");

        txtID.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                txtIDFocusGained(evt);
            }
            public void focusLost(java.awt.event.FocusEvent evt) {
                txtIDFocusLost(evt);
            }
        });

        validaID.setForeground(new java.awt.Color(255, 0, 0));
        validaID.setText("ID já cadastrado");

        javax.swing.GroupLayout pnlSeSalaLayout = new javax.swing.GroupLayout(pnlSeSala);
        pnlSeSala.setLayout(pnlSeSalaLayout);
        pnlSeSalaLayout.setHorizontalGroup(
            pnlSeSalaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlSeSalaLayout.createSequentialGroup()
                .addGroup(pnlSeSalaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(lblID)
                    .addComponent(txtID, javax.swing.GroupLayout.PREFERRED_SIZE, 102, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addComponent(validaID)
                .addGap(38, 38, 38)
                .addGroup(pnlSeSalaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(txtCapacidade, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblCapacidade))
                .addGap(205, 205, 205))
        );
        pnlSeSalaLayout.setVerticalGroup(
            pnlSeSalaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlSeSalaLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlSeSalaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblID)
                    .addComponent(lblCapacidade))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(pnlSeSalaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(pnlSeSalaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(txtID, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(validaID))
                    .addComponent(txtCapacidade, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        cmbFacilidade1.setEditable(true);
        cmbFacilidade1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Fácil", "Média", "Difícil", "Lá na PQP" }));

        cbxIsSala.setText("É uma sala");

        validaNome.setForeground(new java.awt.Color(255, 0, 0));
        validaNome.setText("Nome já cadastrado");

        javax.swing.GroupLayout pnlContentLayout = new javax.swing.GroupLayout(pnlContent);
        pnlContent.setLayout(pnlContentLayout);
        pnlContentLayout.setHorizontalGroup(
            pnlContentLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlContentLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlContentLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(pnlContentLayout.createSequentialGroup()
                        .addComponent(btnEditar)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(btnExcluir))
                    .addComponent(pnlSeSala, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 520, Short.MAX_VALUE)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 520, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, pnlContentLayout.createSequentialGroup()
                        .addGroup(pnlContentLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(lblNome)
                            .addComponent(lblEndereco)
                            .addComponent(lblAcesso, javax.swing.GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE)
                            .addComponent(cmbFacilidade1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(cbxIsSala)
                            .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, 187, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(18, 18, 18)
                        .addComponent(validaNome)))
                .addGap(90, 90, 90))
        );
        pnlContentLayout.setVerticalGroup(
            pnlContentLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlContentLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(lblNome)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(pnlContentLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(validaNome))
                .addGap(18, 18, 18)
                .addComponent(lblEndereco)
                .addGap(18, 18, 18)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 105, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(36, 36, 36)
                .addComponent(lblAcesso)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(cmbFacilidade1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(cbxIsSala)
                .addGap(18, 18, 18)
                .addComponent(pnlSeSala, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 68, Short.MAX_VALUE)
                .addGroup(pnlContentLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnEditar)
                    .addComponent(btnExcluir))
                .addGap(24, 24, 24))
        );

        pnlLocal.setBackground(new java.awt.Color(255, 255, 255));
        pnlLocal.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 20, 1, 20));
        pnlLocal.setPreferredSize(new java.awt.Dimension(100, 50));
        pnlLocal.setLayout(new java.awt.GridBagLayout());

        lblLocal.setText("LOCAL");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
        gridBagConstraints.weightx = 0.8;
        pnlLocal.add(lblLocal, gridBagConstraints);

        lblDescricaoLocal.setFont(new java.awt.Font("Monospaced", 0, 10));
        lblDescricaoLocal.setText("Listar, adicionar, editar e excluir locais.");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.ipadx = 20;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
        gridBagConstraints.insets = new java.awt.Insets(2, 0, 0, 0);
        pnlLocal.add(lblDescricaoLocal, gridBagConstraints);

        icoLocal.setIcon(new javax.swing.ImageIcon(getClass().getResource("/agendaBD/imagens/super-mario-bros-3.jpg"))); // NOI18N
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 1;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.gridheight = 2;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
        pnlLocal.add(icoLocal, gridBagConstraints);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(147, 147, 147)
                .addComponent(pnlContent, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            .addComponent(pnlLocal, javax.swing.GroupLayout.DEFAULT_SIZE, 767, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(pnlController, javax.swing.GroupLayout.PREFERRED_SIZE, 156, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(611, Short.MAX_VALUE)))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(pnlLocal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(pnlContent, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(67, 67, 67)
                    .addComponent(pnlController, javax.swing.GroupLayout.DEFAULT_SIZE, 517, Short.MAX_VALUE)))
        );
    }// </editor-fold>//GEN-END:initComponents

private void btnEditarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEditarActionPerformed

    if (this.status == EXIBINDO) {//botao editar
        this.setEditable(true);
        this.status = EDITANDO;
        txtNome.setEnabled(false);
        txtID.setEnabled(false);
        cbxIsSala.setEnabled(false);
    } else if (this.status == EDITANDO) {//botao ok
        this.setEditable(false);
        if (upDate) {
            this.salvarEdicao();
        } else {
            this.salvarNovoLocal();
        }
        this.status = EXIBINDO;
    }

    validaID.setVisible(false);
    validaNome.setVisible(false);
}//GEN-LAST:event_btnEditarActionPerformed

    /**
     * Salva o cadastro de um novo local  no BD
     */
    private void salvarNovoLocal() {

        String nome = txtNome.getText();
        String endereço = txtEndereco.getText();
        String facilidade = cmbFacilidade1.getSelectedItem().toString();
        boolean sala = cbxIsSala.isSelected();
        String id = txtID.getText();
        String capacidade = txtCapacidade.getText();

        if (capacidade.equals("")) {
            capacidade = "0";
        }

        if (valNome) {
            if (sala) {

                if (valID) {
                    try {

                        //insere os dados no BD na tabela LOCAIS
                        Conexao.getInstance().consultar("insert into LOCAIS " +
                                "(nome," +
                                "facilidade_de_acesso," +
                                "endereço)" +
                                "values " +
                                "('" + nome + "', '" + facilidade + "', '" + endereço + "')");

                        Conexao.getInstance().consultar("commit");

                        //insere os dados no BD na tabela Salas
                        Conexao.getInstance().consultar("insert into SALAS " +
                                "(nome," +
                                "facilidade_de_acesso," +
                                "id," +
                                "capacidade," +
                                "endereço)" +
                                "values " +
                                "('" + nome + "', '" + facilidade + "', " + id + ", " + capacidade + ", '" + endereço + "')");

                        Conexao.getInstance().consultar("commit");

                    } catch (Exception ex) {
                        Logger.getLogger(PainelCompromissos.class.getName()).log(Level.SEVERE, null, ex);
                    }
                } else {
                    JOptionPane.showMessageDialog(this, "Local não cadastrado", "ATENÇÃO", JOptionPane.ERROR_MESSAGE);
                    this.listaLocais();
                    this.clearComponetes();
                }
            } else {
                try {
                    //insere os dados no BD na tabela LOCAIS
                    Conexao.getInstance().consultar("insert into LOCAIS " +
                            "(nome," +
                            "facilidade_de_acesso," +
                            "endereço)" +
                            "values " +
                            "('" + nome + "', '" + facilidade + "', '" + endereço + "')");

                    Conexao.getInstance().consultar("commit");

                } catch (Exception ex) {
                    Logger.getLogger(PainelCompromissos.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        } else {
            JOptionPane.showMessageDialog(this, "Local não cadastrado", "ATENÇÃO", JOptionPane.ERROR_MESSAGE);
            this.listaLocais();
            this.clearComponetes();
        }

        if (valNome && valID) {
            JOptionPane.showMessageDialog(this, "Cadastro realizado com sucesso", "", JOptionPane.OK_OPTION);
            this.listaLocais();
            this.clearComponetes();
        }


    }

    /**
     * Atualiza um local no BD
     */
    private void salvarEdicao() {

        String nome = txtNome.getText();
        String endereço = txtEndereco.getText();
        String facilidade = cmbFacilidade1.getSelectedItem().toString();
        boolean sala = cbxIsSala.isSelected();
        String id = txtID.getText();
        String capacidade = txtCapacidade.getText();

        if (capacidade.equals("")) {
            capacidade = "0";
        }

        if (sala) {
            try {
                //insere os dados no BD na tabela LOCAIS
                Conexao.getInstance().consultar("update LOCAIS set " +
                        "facilidade_de_acesso = '" + facilidade + "'," +
                        "endereço = '" + endereço + "'" +
                        "where nome = '" + nome + "'");

                Conexao.getInstance().consultar("commit");

                //insere os dados no BD na tabela Salas
                Conexao.getInstance().consultar("update SALAS set " +
                        "facilidade_de_acesso = '" + facilidade + "'," +
                        "id = " + id + "," +
                        "capacidade =" + capacidade + "," +
                        "endereço = '" + endereço + "'" +
                        "where nome = '" + nome + "'");

                Conexao.getInstance().consultar("commit");

            } catch (Exception ex) {
                Logger.getLogger(PainelCompromissos.class.getName()).log(Level.SEVERE, null, ex);
            }

        } else {
            try {
                //insere os dados no BD na tabela LOCAIS
                Conexao.getInstance().consultar("update LOCAIS set " +
                        "facilidade_de_acesso = '" + facilidade + "'," +
                        "endereço = '" + endereço + "'" +
                        "where nome = '" + nome + "'");

                Conexao.getInstance().consultar("commit");

            } catch (Exception ex) {
                Logger.getLogger(PainelCompromissos.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        this.upDate = false;
        this.listaLocais();
        this.clearComponetes();
        JOptionPane.showMessageDialog(this, "Alteração realizada com sucesso", "", JOptionPane.OK_OPTION);
    }

    /**
     *limpa o preencimento dos componentes
     */
    private void clearComponetes() {

        txtNome.setText("");
        txtEndereco.setText("");
        txtCapacidade.setText("");
        txtID.setText("");
        cmbFacilidade1.setSelectedIndex(0);
        cbxIsSala.setSelected(false);

    }

private void btnNovoContatoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNovoContatoActionPerformed
    // TODO add your handling code here:
    this.clearComponetes();
    this.setEditable(true);
    this.status = EDITANDO;
    this.upDate = false;
    validaID.setVisible(false);
    validaNome.setVisible(false);
}//GEN-LAST:event_btnNovoContatoActionPerformed

private void lstLocalMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lstLocalMouseClicked
    // TODO add your handling code here:
    this.status = EXIBINDO;//fica no estado exibindo até que um dos botões(Editar, Excluir) seja apertado
    this.setEditable(false);
    validaID.setVisible(false);
    validaNome.setVisible(false);

    if (!lstLocal.isSelectionEmpty()) {

        String nome = lstLocal.getSelectedValue().toString();
        this.carregaItemDaLLocais(nome);
        upDate = true;

        this.setComponente(this.btnEditar, true);
        this.setComponente(this.btnExcluir, true);
    }
}//GEN-LAST:event_lstLocalMouseClicked

private void btnExcluirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExcluirActionPerformed
    // TODO add your handling code here:
    validaID.setVisible(false);
    validaNome.setVisible(false);

    if (this.status == EXIBINDO) {//botao excluir

        String nome = txtNome.getText();
        boolean sala = cbxIsSala.isSelected();

        if (sala) {
            try {
                //apaga os dados no BD na tabela LOCAIS
                Conexao.getInstance().consultar("delete SALAS where nome = '" +
                        nome + "'");

                Conexao.getInstance().consultar("commit");

                //apaga os dados no BD na tabela Salas
                Conexao.getInstance().consultar("delete LOCAIS where nome = '" +
                        nome + "'");

                Conexao.getInstance().consultar("commit");

                this.clearComponetes();
                this.listaLocais();
                this.setComponente(this.btnEditar, false);
                this.setComponente(this.btnExcluir, false);

            } catch (Exception ex) {
                Logger.getLogger(PainelCompromissos.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            try {
                //insere os dados no BD na tabela Salas
                Conexao.getInstance().consultar("delete LOCAIS where nome = '" +
                        nome + "'");

                Conexao.getInstance().consultar("commit");

                this.clearComponetes();
                this.listaLocais();

            } catch (Exception ex) {
                Logger.getLogger(PainelCompromissos.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        this.listaLocais();
        this.clearComponetes();
        this.setComponente(this.btnEditar, false);
        this.setComponente(this.btnExcluir, false);

        JOptionPane.showMessageDialog(this, "Exclusão realizada com sucesso",
                "", JOptionPane.OK_OPTION);
    } else if (this.status == EDITANDO) {//botao cancelar

        this.clearComponetes();

        if (upDate) {
            this.status = EXIBINDO;
            this.setEditable(false);
        }
    }
}//GEN-LAST:event_btnExcluirActionPerformed

private void txtNomeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_txtNomeActionPerformed
    // TODO add your handling code here:
}//GEN-LAST:event_txtNomeActionPerformed

private void txtNomeFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtNomeFocusGained
    // TODO add your handling code here:
    validaNome.setVisible(false);
}//GEN-LAST:event_txtNomeFocusGained

private void txtNomeFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtNomeFocusLost
    // TODO add your handling code here:
    ResultSet resultado;
    String nome = txtNome.getText();

    if (!nome.equals("")) {
        try {
            resultado = Conexao.getInstance().consultar("select nome from locais where nome = '" + nome + "'");

            if (resultado.next()) {
                valNome = false;
                validaNome.setVisible(true);
            }
        } catch (Exception ex) {
            Logger.getLogger(PainelLocal.class.getName()).log(Level.SEVERE, null, ex);
        }
    } else {
        valNome = false;
        validaNome.setText("nome inválido");
        validaNome.setVisible(true);
    }
}//GEN-LAST:event_txtNomeFocusLost

private void txtIDFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtIDFocusGained
    // TODO add your handling code here:
    validaID.setVisible(false);
}//GEN-LAST:event_txtIDFocusGained

private void txtIDFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtIDFocusLost
    // TODO add your handling code here:

    //if (cbxIsSala.isSelected()) {

        ResultSet resultado;
        String id = txtID.getText();

        try {
            int iD = Integer.parseInt(txtID.getText());
        } catch (Exception e) {
            validaID.setText("ID inválido");
            validaID.setVisible(true);
            valID = false;
        }

        if (!id.equals("") && valID) {
            try {
                resultado = Conexao.getInstance().consultar("select nome from salas where id = " + id);

                if (resultado.next()) {
                    valID = false;
                    validaID.setVisible(true);
                }
            } catch (Exception ex) {
                Logger.getLogger(PainelLocal.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            valID = false;
            validaID.setText("id inválido");
            validaID.setVisible(true);
        }
    //}
}//GEN-LAST:event_txtIDFocusLost
    /**
     * carrega um item selecionado na lista locais
     * @param chave
     */
    private void carregaItemDaLLocais(String chave) {

        ResultSet resultado;
        try {
            resultado = Conexao.getInstance().consultar("select * from salas where nome = '" + chave + "'");

            if (resultado.next()) {

                String nome = "";
                String endereco = "";
                String facilidade = "";
                String id = "";
                String capacidade = "";

                do {
                    nome = resultado.getString("nome");
                    endereco = resultado.getString("endereço");
                    facilidade = resultado.getString("facilidade_de_acesso");
                    id = resultado.getString("id");
                    capacidade = resultado.getString("capacidade");
                } while (resultado.next());

                int i, aux = 0;
                for (i = 0; i < cmbFacilidade1.getItemCount(); i++) {

                    if (cmbFacilidade1.getItemAt(i).toString().equals(facilidade)) {
                        aux = i;
                    }
                }
                txtNome.setText(nome);
                txtEndereco.setText(endereco);
                cmbFacilidade1.setSelectedIndex(aux);
                txtID.setText(id);
                txtCapacidade.setText(capacidade);
                cbxIsSala.setSelected(true);

            } else {
                resultado = Conexao.getInstance().consultar("select * from locais where nome = '" + chave + "'");

                String nome = "";
                String endereco = "";
                String facilidade = "";

                while (resultado.next()) {

                    nome = resultado.getString("nome");
                    endereco = resultado.getString("endereço");
                    facilidade = resultado.getString("facilidade_de_acesso");
                }

                int i, aux = 0;
                for (i = 0; i < cmbFacilidade1.getItemCount(); i++) {

                    if (cmbFacilidade1.getItemAt(i).toString().equals(facilidade)) {
                        aux = i;
                    }
                }
                txtNome.setText(nome);
                txtEndereco.setText(endereco);
                cmbFacilidade1.setSelectedIndex(aux);
            }
        } catch (Exception ex) {
            Logger.getLogger(PainelCompromissos.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnEditar;
    private javax.swing.JButton btnExcluir;
    private javax.swing.JButton btnNovoContato;
    private javax.swing.JCheckBox cbxIsSala;
    private javax.swing.JComboBox cmbFacilidade1;
    private javax.swing.JLabel icoLocal;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JLabel lblAcesso;
    private javax.swing.JLabel lblCapacidade;
    private javax.swing.JLabel lblDescricaoLocal;
    private javax.swing.JLabel lblEndereco;
    private javax.swing.JLabel lblID;
    private javax.swing.JLabel lblLocal;
    private javax.swing.JLabel lblNome;
    private javax.swing.JList lstLocal;
    private javax.swing.JPanel pnlContent;
    private javax.swing.JPanel pnlController;
    private javax.swing.JPanel pnlLocal;
    private javax.swing.JPanel pnlSeSala;
    private javax.swing.JTextField txtCapacidade;
    private javax.swing.JTextArea txtEndereco;
    private javax.swing.JTextField txtID;
    private javax.swing.JTextField txtNome;
    private javax.swing.JLabel validaID;
    private javax.swing.JLabel validaNome;
    // End of variables declaration//GEN-END:variables
}
